package com.cskaoyan.javase.reflect._2clazz;

import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;

/**
 * 配置文件的格式有多种,常见的有".properties",".yml",".xml"等
 * 今天学习一下".properties"配置文件的使用
 *
 * 在Java中,用类java.util.Properties类来描述某一个配置文件
 * 接下来就是API的学习了
 * Properties 类表示了一个持久的(它是一个文件)属性集(属性的键值对)。
 * 所以Properties 类就是表示一个属性键值对的properties文件
 *
 * 常用构造器就直接无参创建对象就行了。
 * 常用成员方法：
 * // 从输入流中读取属性列表（键和元素对）。
 * void  load(InputStream inStream)
 * // 按简单的面向行的格式从输入字符流中读取属性列表（键和元素对）。
 * void  load(Reader reader)
 * // 用指定的键在此属性列表中搜索属性。
 * String  getProperty(String key)
 *
 * 一个小问题：如果配置文件中有中文，发现取出来的属性键值对乱码咋办？
 * 用字符流读就可以了。
 * 实际开发中,配置文件中,是比较少用中文,一般都是字母数字等.
 *
 * @since 10:13
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class PropertiesDemo {
    public static void main(String[] args) throws IOException {
        Properties properties = new Properties();
        // properties.load(new FileInputStream("config.properties"));
        properties.load(new FileReader("config.properties"));
        String className = properties.getProperty("className");
        String ip = properties.getProperty("ip");
        String port = properties.getProperty("port");
        System.out.println(className);
        System.out.println(ip);
        System.out.println(port);
        String name = properties.getProperty("名字");
        System.out.println(name);
        String name2 = properties.getProperty("name");
        System.out.println(name2);
    }
}
